﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Terrae.Clases;

namespace Terrae.Logica.Comandos
{
    public abstract class Comando<T>
    {
        #region Atributos

        protected Entidad _entidad;

        #endregion Atributos

        #region Contructores

        /// <summary>
        /// Constructor vacio de la clase comando.
        /// </summary>
        public Comando()
        {
        }

        /// <summary>
        /// Constructor generico que recibe una entidad.
        /// </summary>
        /// <param name="entidad">la entidad</param>
        public Comando(Entidad objeto)
        {
        }

        #endregion Contructores

        #region Métodos

        /// <summary>
        /// Método único para la ejecución de los comandos con respecto a cada
        /// uno de los modulos, este metodo sera sobreescrito en cada uno de 
        /// las clases que heredan de las misma (polimorfismo).
        /// </summary>
        public abstract T Ejecutar();

        #endregion Métodos

        #region Getter and Setter

        public Entidad Entidad
        {
            get { return _entidad; }
            set { _entidad = value; }
        }

        #endregion Getter and Setter
    }
}